/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.stefanini.informacion_mundialista.controles;

import com.stefanini.informacion_mundialista.Grupo;
import com.stefanini.informacion_mundialista.ejbs.GroupManager;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;


/**
 *
 * @author CarlosAlberto
 */
@Named(value="gruposAdminControler")
@SessionScoped
public class GruposAdminControl implements Serializable{
    
    private static final long serialVersionUID=1l;

    private Grupo grupo;

    @EJB
    private GroupManager groupManager;

    private List<Grupo> Grupos;

    private boolean realizarConsulta = true;
    private boolean isEdit = false;

    public void initCrear()
    {
        grupo = new Grupo();
        isEdit = false;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/Informacion_MundialistaWeb/pages/grupos/agregarGrupo.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
        }

    }
    public void initEdit(Grupo grupoEdit)
    {
        this.grupo = grupoEdit;
        isEdit = true;
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("/Informacion_MundialistaWeb/pages/grupos/agregarGrupo.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
        }

    }
    public void guardarGrupo() {
        FacesContext ctx = FacesContext.getCurrentInstance();

        if (groupManager.verificarGrupoExistente(grupo.getNombre())) {
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "Ya existe un grupo con el nombre ingresado"));
        } else {

            if (groupManager.guardarGrupo(grupo, isEdit)) {
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info",
                        "Grupo creado exitosamente"));

                realizarConsulta = true;

                try {
                    ctx.getExternalContext().redirect("/Informacion_MundialistaWeb/pages/grupos/gruposAdmin.xhtml");
                } catch (IOException ex) {
                    Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, "Error al redireccionar", ex);
                }

            } else {
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                        "Error al crear el grupo"));
            }
        }
    }

    public void consultarGrupos() {
        if (realizarConsulta) {
            Grupos = groupManager.getAllGrupos();
            realizarConsulta = false;
        }
    }
    public void consultarGruposNombres() {
        if (realizarConsulta) {
            Grupos = groupManager.getAllGruposNombres();
            realizarConsulta = false;
        }
    }

    /**
     * @return the grupo
     */
    public Grupo getGrupo() {
        return grupo;
    }

    /**
     * @param grupo the grupo to set
     */
    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }

    /**
     * @param grupos the grupos to set
     */
    public void setGrupos(List<Grupo> grupos) {
        this.Grupos = grupos;
    }

    /**
     * @return the Grupos
     */
    public List<Grupo> getGrupos() {
        return Grupos;
    }
}
